package com.nuanshui.heatedloan.middleware.convert;

/**
 * 转换器类，以后要写转换器就先看看有没有相同业务场景的，尽量写到一块。然后写新的就实现这个
 * @author Gonzo
 * @date 2016年12月6日 
 * @param <S> 要转换的源
 * @param <T> 要转换成的target
 */
public interface ConvertSupport<S, T> {
	
	/**
	 * 转换
	 * @author Gonzo
	 * @date 2016年12月6日下午8:13:54
	 * @param s
	 * @param param
	 * @return
	 * @since 1.0.0
	 */
    T convert(S s, Object param);
	
	/**
	 * 转换，但是传入指定的类型，用来作为转换的对象，不同的子类转换扩展，可以看看String2MediaTextConverImpl这个类
	 * @author Gonzo
	 * @date 2016年12月7日下午4:23:28
	 * @param s
	 * @param param
	 * @param t
	 * @return
	 * @since
	 */
    T convert(S s, Object param, T t);
	
	/**
	 * 反转
	 * @author Gonzo
	 * @date 2016年12月6日下午8:14:28
	 * @param t
	 * @param param
	 * @return
	 * @since
	 */
    S reConvert(T t, Object param);
	

	/**
	 * 反转 同convert
	 * @author Gonzo
	 * @date 2016年12月6日下午8:14:28
	 * @param t
	 * @param param
	 * @return
	 * @since
	 */
    S reConvert(T t, Object param, S s);
	
	
	
}
